/*
 * $Id: Collection.h,v 1.1 2006-03-20 14:50:57 bacon Exp $
 */

#ifndef _XPP_BAS_COLLECTION_CLASS_
#define _XPP_BAS_COLLECTION_CLASS_

#include <xp/types.h>
#include <xp/macros.h>

namespace xpp
{
	namespace bas
	{
		
		template <typename T>
		class Collection
		{
		public:
			virtual bool add (const T& o) = 0;
			virtual bool addAll (const Collection<T>& c) = 0;

			virtual void clear () = 0;

			virtual bool contains (const T& o) = 0;
			virtual bool containsAll (const Collection<T>& c) = 0;

			virtual bool isEmpty () = 0;

			virtual bool remove (const T& o) = 0;
			virtual bool removeAll (const Collection<T>& o) = 0;

			virtual bool retainAll (const Collection<T>& o) = 0;

			virtual xp_size_t size () = 0;

			virtual T* toArray () = 0;
		};

	}
}

#endif

